import request from '@/utils/request.js'
import { getLocalChannels, hasToken, setLocalChannels } from '@/utils/storage'
import { SAVE_CHANNELS, SAVE_ALL_CHANNELS } from '../constance/home'
// 保存用户的频道
export const saveChannels = (payload) => ({ type: SAVE_CHANNELS, payload })
// 保存所有的频道
export const saveAllChannels = (payload) => ({
  type: SAVE_ALL_CHANNELS,
  payload,
})
// 获取用户的频道列表
export const getUserChannels = () => {
  return async (dispatch) => {
    // 登录了  发请求获取数据
    if (hasToken()) {
      const res = await request({
        url: `/user/channels`,
        method: 'GET',
      })
      dispatch(saveChannels(res.data.channels))
    } else {
      // 没登录(没有token) 优先从本地存储里获取数据
      const channels = getLocalChannels()
      if (channels) {
        // 如果本地存储了频道  组件内直接使用
        dispatch(saveChannels(channels))
      } else {
        // 如果本地没有存储频道（也没有登录）
        // 发请求获取数据
        const res = await request({
          url: `/user/channels`,
          method: 'GET',
        })
        dispatch(saveChannels(res.data.channels))
        // 并保存到本地
        setLocalChannels(res.data.channels)
      }
    }
  }
}
// 获取所有的频道
export const getAllChannels = () => {
  return async (dispatch) => {
    const res = await request({
      url: `/channels`,
      method: 'GET',
    })
    dispatch(saveAllChannels(res.data.channels))
  }
}
